AWS Step FunctionsでX-Rayを有効にしてみた(AWS CDK v2)
こんにちは、CX事業本部 IoT事業部の若槻です。
AWS Step Functionsでは、X-Rayを有効にすることによりState Machine実行を可視化して、ボトルネックの発見やトラブルシュートに役立てることができます。
今回は、AWS CDK v2でAWS Step FunctionsのX-Rayを有効にし、動作を確認してみました。
やってみた
環境作成
AWS CDK v2(TypeScript)で次のようなCDKスタックを作成します。
import { Construct } from 'constructs'; import { aws_lambda_nodejs, aws_stepfunctions, aws_stepfunctions_tasks, Duration, Stack, StackProps, } from 'aws-cdk-lib'; import { WaitTime } from 'aws-cdk-lib/aws-stepfunctions'; export class AwsAppStack extends Stack { constructor(scope: Construct, id: string, props: StackProps) { super(scope, id, props); const funcTask = new aws_stepfunctions_tasks.LambdaInvoke( this, 'funcTask', { lambdaFunction: new aws_lambda_nodejs.NodejsFunction(this, 'func', { entry: 'src/handler.ts', handler: 'handler', }), }, ); // StateMachine(Standard) new aws_stepfunctions.StateMachine(this, 'stateMachine', { stateMachineName: 'stateMachine', definition: funcTask.next( new aws_stepfunctions.Wait(this, 'wait', { time: WaitTime.duration(Duration.seconds(3)), }), ), tracingEnabled: true, }); // StateMachine(Express) new aws_stepfunctions.StateMachine(this, 'express', { stateMachineName: 'express', stateMachineType: aws_stepfunctions.StateMachineType.EXPRESS, definition: new aws_stepfunctions.Pass(this, 'pass'), tracingEnabled: true, }); } }
- StateMachine ClassでtracingEnabledを
true
にすることにより、StateMachineのX-Rayを有効にすることができます。 - StandartおよびExpressの2種類のWorkflow TypeのState Machineをそれぞれ作成して試してみます。
動作確認
Standard Workflow
まずはStandard Workflowを実行してみます。
実行が成功しました。Details欄を見ると[X-Ray trace map]という項目が表示されていますね。Trace IDのリンクを開きます。
するとX-RayのコンソールでTraceの詳細が開けました。しかしこれは古いコンソールなので新しい方を開きます。
すると新しいコンソールでTraceの一覧を開けました。見たいTraceを開きます。
Traceの詳細画面が開けました。TaskおよびTask内のAPIコールの時系列が可視化されていますね。
Express Workflow
Express Workflowの方も実行してみます。
実行が成功しました。Traceのリンクが表示されているので開きます。
新しいコンソールのTraceの詳細画面です。Standardと同じく、実行の時系列が可視化されていますね。
Step Functionsの新しい実行詳細画面でもある程度追跡できる
Standard Workflowの場合、AWS Step Functionsの新しい実行詳細ページのコンソールであれば、デフォルトである程度の時系列の追跡は行えます。(Expressはなし)
手軽さではこちらの方に軍配が上がるかも知れません。
ただし、X-rayを利用するとTraceを横断的にクエリできたり、X-Ray Analyticsが利用できたりするので、より詳細な分析ができるようにはなります。
おわりに
AWS CDK v2でAWS Step FunctionsのX-Rayを有効にし、動作を確認してみました。
AWS X-Rayは全然使ったことが無かったのですが、Serverlessな構成では処理が多くのサービスやリソースに分散することが多いので、そういった場合にX-Rayは効果を発揮しそうだなと感じました。
以上